查看原文
其他

使用 SDK 扩展,进一步简化开发流程

Android Android 开发者 2023-03-09

作者 / 软件工程师 Anton Hansson


Android 10 及以上版本支持模块化系统组件,这些组件便于我们在主要 API 级别版本之外加快 Android 生态系统的功能和安全更新速度,并使新功能向后兼容已经发布的 Android 版本。此类改进有助于提高开发工作的灵活性,同时扩大应用开发者的开发范围。为此,我们已经构建了一个全新的 Extension SDK 框架来与这些 API 集成。现在,我们将发布 Extension SDK 的首个公开版本 (Extension Level 4)。


  • 模块化系统组件

https://source.android.google.cn/docs/core/ota/modular-system?hl=zh-cn



加快 API 和功能的引入速度



开发者引入主要 API 级别版本之外的新功能后,可以更快地实现创新。正如之前的博文所述,自今年起,我们计划在 Android 13 设备上推出首个 Android 隐私沙盒 Beta 版。如此一来,您便可开始使用 Extension SDK 将解决方案与 AdServices API 集成,以便为有限的生产测试做好准备。您可以访问官方文档,进一步了解如何参与隐私沙盒 Beta 版的开发工作,以及如何借助测试设备或模拟器设置开发环境。

  • 博文
https://android-developers.googleblog.com/2022/11/preparing-for-android-privacy-sandbox-beta.html
  • 推出首个 Android 隐私沙盒 Beta 版

http://developer.android.google.cn/design-for-safety/privacy-sandbox/program-overview?version=beta

  • 官方文档: 进一步了解相关内容

http://developer.android.google.cn/design-for-safety/privacy-sandbox/program-overview?version=beta



向后兼容性



我们还可以利用 Extension SDK 将某些平台功能的支持扩展到现有 Android 版本,进而扩大用户覆盖范围。例如,以前只有 API 级别 33 (Android 13) 及以上版本可以访问照片选择器 API,而现在,搭载 R 扩展版本 2 及以上版本的设备也可以通过 Extension SDK 向后兼容至 API 级别 30 (Android 11)。


  • 照片选择器 API

https://developer.android.google.cn/training/data-storage/shared/photopicker



检查 API 的可用性



为了帮助您确定扩展 API 的可用性,我们在 API 参考文档中添加了额外信息,说明 API 适用的 API 级别和最低扩展版本。例如,适用于 ACTION_PICK_IMAGES 的 API 参考文档指出,该 API 可在 "Android R 扩展版本 2" 及以上版本中使用。

  • ACTION_PICK_IMAGES

https://developer.android.google.cn/reference/android/provider/MediaStore#ACTION_PICK_IMAGES


在运行时,您可以采用类似于 Build.VERSION.SDK_INT 通常用来检查 Android 版本的方式查询扩展的版本。例如,如果您需要验证 PhotoPicker API 的可用性,请使用全新 API SdkExtensions.getExtensionVersion。R 扩展使用与 R 对应的版本代码 (30):
https://developer.android.google.cn/reference/android/os/ext/SdkExtensions#getExtensionVersion(int)
fun isPhotoPickerAvailable(): Boolean { return SdkExtensions.getExtensionVersion(VERSION_CODES.R) >= 2  }

或者,您也可以通过 Build.VERSION.SDK_INT 检查版本,如下所示:

fun isPhotoPickerAvailable(): Boolean { return Build.VERSION.SDK_INT >= 33  }

这种检查依然是安全且准确的,但此函数将会在 API 现已可用的部分设备上返回 False。因此,在检查 API 的可用性时,SDK_INT 检查并非最佳选择,扩展版本检查更为合适。此外,SDK_INT >= 33 的所有设备上的 R 扩展版本 >= 2,但对于某些 SDK_INT < 33 的设备而言,其 R 扩展版本 >= 2。


类似地,AdServices API 参考文档可能会指出 "已在广告服务扩展 4 中添加此 API"。广告服务扩展使用 SdkExtensions.AD_SERVICES 常量。该可用性检查如下所示:
fun isAdServicesAvailable(): Boolean { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4  }

为了方便开发者,我们还将扩展 Jetpack,使其更易与扩展版本搭配使用。例如,您可以使用 Jetpack 库函数来检查 PhotoPicker 的可用性,该函数对条件版本检查进行了抽象化处理。我们希望发布更多 Jetpack 库 (如在隐私沙盒中发布隐私保护 API),以便帮助开发者正确使用通过 Extension SDK 发布的 API。


  • Jetpack 库函数来检查 PhotoPicker 的可用性

https://developer.android.google.cn/reference/kotlin/androidx/activity/result/contract/ActivityResultContracts.PickVisualMedia#isPhotoPickerAvailable()



工具支持



为帮助确保应用质量,我们为 Android Lint 的 NewApi 检查添加了扩展版本工具支持。借助 Android Studio Flamingo,该工具可以为使用 SDK 扩展启动的 API 自动生成正确的版本检查。您完全可以自行选择是否使用这些全新版本检查,但采用此类检查有助于开发者进一步广泛采纳新的 API。



深入了解 SDK 扩展



我们刚刚步入 SDK 扩展开发者旅程,并且计划在未来推出更多功能。您可以立即在 SDK 管理器中获取最新 SDK 扩展 4。请访问隐私沙盒 Beta 版照片选择器,详细了解 SDK 扩展及相关文档。也欢迎您持续关注我们,及时了解更多开发技术和产品更新等资讯动态。

  • 隐私沙盒 Beta 版

http://developer.android.google.cn/design-for-safety/privacy-sandbox/program-overview?version=beta

  • 照片选择器

https://developer.android.google.cn/training/data-storage/shared/photopicker

  • SDK 扩展
https://developer.android.google.cn/sdkExtensions



推荐阅读

如页面未加载,请刷新重试

 点击屏末 | 阅读原文 | 即刻了解 SDK 扩展更多相关信息




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存